package br.com.javamagazine.leilaojm.managedbean;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.javamagazine.leilaojm.domain.Anuncio;
import br.com.javamagazine.leilaojm.ejb.AnuncioService;

@Named
@RequestScoped
public class AnuncioBean implements Serializable {

	private static final long serialVersionUID = -7139269911905182896L;

	@EJB
	private AnuncioService anuncioService;

	@Inject
	private ModeloBean modeloBean;

	@Inject
	private Anuncio anuncio;

	private Map<String, String> listaCidade;
	private List<Anuncio> listaAnuncios;

	public String listaAnunciosCadastrados() {
		listaAnuncios = anuncioService.listaAnuncios();
		return "listaAnuncios.xhtml";
	}

	public String cadastraAnuncio() {
		anuncio.setModelo(modeloBean.getModelo());
		anuncio.setVendido(false);
		if (!anuncio.getPrecoFixo()) {
			anuncio.setValorLanceAtual(100.0);
		}
		anuncioService.salvaAnuncio(anuncio); // Nenhuma mensagem de sucesso. A
												// pagina já mostra

		return "cadastrarAnuncioPasso3.xhtml";
	}

	public void atualizaAnuncio() {
		// recarrega o anúncio do banco, pois pode ter mudado o valor do último
		// lance
		anuncio = anuncioService.recuperaAnuncioPeloId(anuncio.getId());
	}

	public void efetuaCompra() {
		anuncio.setVendido(true);
		anuncioService.atualizaAnuncio(anuncio);
	}

	public void efetuaLance() {
		anuncio.setValorLanceAtual(anuncio.getValorLanceAtual() + 100.0);
		anuncioService.atualizaAnuncio(anuncio);
	}

	public void atualizaCidadesPelaUF() {
		listaCidade = new LinkedHashMap<String, String>();
		if (anuncio.getUf() != null) {
			// selecionou CE
			listaCidade.put("Fortaleza", "Fortaleza");
			listaCidade.put("Juazeiro do Norte", "Juazeiro do Norte");
		}
	}

	public Anuncio getAnuncio() {
		return anuncio;
	}

	public void setAnuncio(Anuncio anuncio) {
		this.anuncio = anuncio;
	}

	public Map<String, String> getListaCidade() {
		return listaCidade;
	}

	public void setListaCidade(Map<String, String> listaCidade) {
		this.listaCidade = listaCidade;
	}

	public List<Anuncio> getListaAnuncios() {
		return listaAnuncios;
	}

	public void setListaAnuncios(List<Anuncio> listaAnuncios) {
		this.listaAnuncios = listaAnuncios;
	}

}
